package com.fab.qldh.entity.quanlytruonghoc;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Vector;

public class Main {
	private static List<ThongTinGiangDuong> listGiangDuong;
	private static List<ThongTinPhongBan> listPhongBan;
	private static List<ThongTinThietBi> listThietBi;
	private static List<ThongTinNhanSu> listNhanSu;

	// nhập danh sách giảng đường
	public static void nhapDSGiangDuong() {
		listGiangDuong = new Vector<ThongTinGiangDuong>();

		ThongTinGiangDuong gd0 = new ThongTinGiangDuong();
		gd0.setTenGiangDuong("Giảng Đường A");
		gd0.setSucchua(500);

		ThongTinGiangDuong gd1 = new ThongTinGiangDuong();
		gd1.setTenGiangDuong("Giảng Đường B");
		gd1.setSucchua(450);

		ThongTinGiangDuong gd2 = new ThongTinGiangDuong();
		gd2.setTenGiangDuong("Giảng Đường C");
		gd2.setSucchua(400);

		ThongTinGiangDuong gd3 = new ThongTinGiangDuong();
		gd3.setTenGiangDuong("Giảng Đường D");
		gd3.setSucchua(600);

		listGiangDuong.add(gd0);
		listGiangDuong.add(gd1);
		listGiangDuong.add(gd2);
		listGiangDuong.add(gd3);
	}

	// nhập danh sách phòng ban
	public static void nhapDSPhongBan() {
		listPhongBan = new Vector<ThongTinPhongBan>();

		ThongTinPhongBan pb0 = new ThongTinPhongBan();
		pb0.setTenPhongBan("Phòng Đào Tạo");
		pb0.setNhiemvu("Quản lý sinh viên");

		ThongTinPhongBan pb1 = new ThongTinPhongBan();
		pb1.setTenPhongBan("Phòng Thí Nghiệm");
		pb1.setNhiemvu("Nghiên cứu");

		ThongTinPhongBan pb2 = new ThongTinPhongBan();
		pb2.setTenPhongBan("Phòng Bảo Vệ");
		pb2.setNhiemvu("Bảo vệ trường học");

		ThongTinPhongBan pb3 = new ThongTinPhongBan();
		pb3.setTenPhongBan("Phòng Thực Hành");
		pb3.setNhiemvu("Ứng dụng lý thuyết vào thực tế");

		listPhongBan.add(pb0);
		listPhongBan.add(pb1);
		listPhongBan.add(pb2);
		listPhongBan.add(pb3);
	}

	// nhập danh sách các thiết bị
	public static void nhapDSThietBi() {
		listThietBi = new Vector<ThongTinThietBi>();

		ThongTinThietBi tb0 = new ThongTinThietBi();
		tb0.setTenThietBi("Máy chiếu");
		tb0.setThuocphongban(listPhongBan.get(1));
		tb0.setTinhtrang("Hoạt động tốt");

		ThongTinThietBi tb1 = new ThongTinThietBi();
		tb1.setTenThietBi("Máy in");
		tb1.setThuocphongban(listPhongBan.get(0));
		tb1.setTinhtrang("Hoạt động tốt");

		ThongTinThietBi tb2 = new ThongTinThietBi();
		tb2.setTenThietBi("Máy vi tính");
		tb2.setThuocphongban(listPhongBan.get(3));
		tb2.setTinhtrang("Hoạt động tốt");

		ThongTinThietBi tb3 = new ThongTinThietBi();
		tb3.setTenThietBi("Máy tạo oxi");
		tb3.setThuocphongban(listPhongBan.get(1));
		tb3.setTinhtrang("Không hoạt động");

		listThietBi.add(tb0);
		listThietBi.add(tb1);
		listThietBi.add(tb2);
		listThietBi.add(tb3);
	}

	// nhập danh sách nhân sự
	public static void nhapDSNhanSu() {
		try{
		listNhanSu = new Vector<ThongTinNhanSu>();
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		
		ThongTinNhanSu nv0 = new ThongTinNhanSu();
		nv0.setTenNhanVien("Nguyễn Văn A");
		nv0.setGioitinh("Nam");
		Date a = df.parse("14/5/1988");
		nv0.setNgaysinh(a);
		nv0.setDiachi("Hoàng Mai, Hà Nội");
		nv0.setThuocphongban(listPhongBan.get(0));
		nv0.setChucvu("Trưởng phòng");
		nv0.setHesoluong((float) 20.36);

		ThongTinNhanSu nv1 = new ThongTinNhanSu();
		nv1.setTenNhanVien("Nguyễn Văn B");
		nv1.setGioitinh("Nam");
		Date b = df.parse("2/3/1986");
		nv1.setNgaysinh(b);
		nv1.setDiachi("Hai Bà Trưng, Hà Nội");
		nv1.setThuocphongban(listPhongBan.get(1));
		nv1.setChucvu("Nhân viên");
		nv1.setHesoluong((float) 3.36);

		ThongTinNhanSu nv2 = new ThongTinNhanSu();
		nv2.setTenNhanVien("Nguyễn Thị Mai");
		nv2.setGioitinh("Nữ");
		Date c = df.parse("29/2/1988");
		nv2.setNgaysinh(c);
		nv2.setDiachi("Hoàng Mai, Hà Nội");
		nv2.setThuocphongban(listPhongBan.get(3));
		nv2.setChucvu("Nhân viên");
		nv2.setHesoluong((float) 4.36);

		ThongTinNhanSu nv3 = new ThongTinNhanSu();
		nv3.setTenNhanVien("Nguyễn Văn C");
		nv3.setGioitinh("Nam");
		Date d = df.parse("25/2/1992");
		nv3.setNgaysinh(d);
		nv3.setDiachi("Hải Dương");
		nv3.setThuocphongban(listPhongBan.get(2));
		nv3.setChucvu("Trưởng phòng");
		nv3.setHesoluong((float) 7.36);

		ThongTinNhanSu nv4 = new ThongTinNhanSu();
		nv4.setTenNhanVien("Nguyễn Văn N");
		nv4.setGioitinh("Nam");
		Date e = df.parse("21/3/1987");
		nv4.setNgaysinh(e);
		nv4.setDiachi("Trường Chinh, Hà Nội");
		nv4.setThuocphongban(listPhongBan.get(0));
		nv4.setChucvu("Nhân viên");
		nv4.setHesoluong((float) 10.36);

		listNhanSu.add(nv0);
		listNhanSu.add(nv1);
		listNhanSu.add(nv2);
		listNhanSu.add(nv3);
		listNhanSu.add(nv4);
		}catch (Exception e) {
			System.out.println("Lỗi định dạng ngày!");
		}
	}

	// hàm nhập các danh sách
	public static void nhapcacdanhsach() {
		nhapDSGiangDuong();
		nhapDSPhongBan();
		nhapDSThietBi();
		nhapDSNhanSu();
	}

	// Hàm thống kê thiết bị
	public static void thongkeThietBi() {
		for (ThongTinThietBi tb : listThietBi) {
			if(tb.getTenThietBi().equals("Máy chiếu")||tb.getTenThietBi().equals("Máy in")){
			System.out.println("Tên thiết bị:" + tb.getTenThietBi()
					+ "\t\t Tại phòng:" + tb.getThuocphongban().getTenPhongBan()
					+ "\t Trong tình trạng:" + tb.getTinhtrang());
			}
			else{
				System.out.println("Tên thiết bị:" + tb.getTenThietBi()
						+ "\t Tại phòng:" + tb.getThuocphongban().getTenPhongBan()
						+ "\t Trong tình trạng:" + tb.getTinhtrang());
			}
		}
	}

	// Tính lương 1 nhân viên
	public static float tinhluongcho1nhanvien(ThongTinNhanSu nv) {
		return nv.getHesoluong() * 1000; // giả sử mức lương tính theo hệ số
		// nhân với 1 triệu vnd
	}

	// Tính lương cho tất cả nhân viên
	public static void tinhluonghanhchinh() {
		for (ThongTinNhanSu nv : listNhanSu) {
			System.out
					.println("Nhân viên có tên:"
							+ nv.getTenNhanVien()
							+ "\t có mức lương:"
							+ tinhluongcho1nhanvien(nv)
							+ "\t giả sử lương được tính bằng hệ số lương nhân với 1 triệu vnd");
		}
	}

	// Thống kê nhân sự
	public static void thongkenhansu() {
		for (ThongTinNhanSu nv : listNhanSu) {
			if(nv.getDiachi().equals("Hải Dương")){
			System.out.println("Họ tên nhân viên:" + nv.getTenNhanVien()
					+ "\t Giới tính:" + nv.getGioitinh() + "\t Ngày sinh:"
					+ doiDateThanhString(nv.getNgaysinh()) + "\t Địa chỉ:" + nv.getDiachi()
					+ "\t\t Làm việc tại:" + nv.getThuocphongban().getTenPhongBan() + "\t Chức vụ:"
					+ nv.getChucvu() + "\t có hệ số lương:" + nv.getHesoluong());
			}
			else{
				System.out.println("Họ tên nhân viên:" + nv.getTenNhanVien()
						+ "\t Giới tính:" + nv.getGioitinh() + "\t Ngày sinh:"
						+ doiDateThanhString(nv.getNgaysinh()) + "\t Địa chỉ:" + nv.getDiachi()
						+ "\t Làm việc tại:" + nv.getThuocphongban().getTenPhongBan() + "\t Chức vụ:"
						+ nv.getChucvu() + "\t có hệ số lương:" + nv.getHesoluong());
			}
		}
	}
	
	//Hàm biến đổi ngày thành chuỗi
	public static String doiDateThanhString(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int ngay = cal.get(Calendar.DATE);
		int thang = cal.get(Calendar.MONTH)+1;
		int nam = cal.get(Calendar.YEAR);
		return (ngay +"/" + thang + "/" + nam );
	}
	
	public static void main(String[] args) {
		nhapcacdanhsach();
		System.out.println("Danh sách nhân viên");
		System.out.println("_________________________________________________________________");
		thongkenhansu();
		System.out.println("_________________________________________________________________");
		System.out.println("Bảng lương nhân viên");
		System.out.println("_________________________________________________________________");
		tinhluonghanhchinh();
		System.out.println("_________________________________________________________________");
		System.out.println("Thống kê thiết bị");
		System.out.println("_________________________________________________________________");
		thongkeThietBi();
	}

}
